package medicalDocumentation.medicalDoc;

import entity.Anamnesis;
import entity.Disease;


import entity.Patient;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateful
public class PatientHistorySessionBean implements PatientHistorySessionBeanRemote {

    @PersistenceContext
    private EntityManager em;
    private Anamnesis anamnesisEntity;

    private Patient patient;
    private List<Anamnesis> anamnesisList=new ArrayList();

    public PatientHistorySessionBean() {
    }


    @Override
    public void deleteHistory(Long PIN,Long recordID) {
        System.out.println("deleteHistoryEJB called");
        patient=em.find(Patient.class, PIN);
        
        Anamnesis anamnesis = em.find(Anamnesis.class, recordID);
        patient.getAnamnesisList().remove(anamnesis);
        em.remove(anamnesis);
        em.flush();
    }

    @Override
    public void editHistory(Date date, String disease, String status, Long recordID, Long PIN) {
        Anamnesis anamnesis = em.find(Anamnesis.class, recordID);
        Patient pat=em.find(Patient.class, PIN);

        anamnesis.setDisease(disease);
        anamnesis.setHistoryDate(date);
        anamnesis.setStatus(status);
        patient.getAnamnesisList().add(anamnesis);


        em.merge(anamnesis);
        em.persist(pat);
        em.flush();
    }

    @Override
    public Long addHistory(Date date, String disease, String status,Long PIN) {
//        System.out.println("addHistory:" + date);
//        System.out.println("addHistory:" + disease);
//       
//        System.out.println("addHistory:" + status);
        anamnesisEntity=new Anamnesis(date,status,disease);
          patient=em.find(Patient.class, PIN);
      
     
        patient.getAnamnesisList().add(anamnesisEntity);
      
        em.persist(anamnesisEntity);
        em.persist(patient);
        em.flush();
        return anamnesisEntity.getId();
       // System.out.println("ID Assigned to the new Anamnesis:" + anamnesisEntity.getId());
    }
    
    @Override
    public Anamnesis getAnamnesis(Long id){
        Anamnesis a = em.find(Anamnesis.class, id);
        return a;
    }
    
    @Override
      public List<Disease> getDisease() {
        String strQuery = "SELECT d from Disease d";
        Query query = em.createQuery(strQuery);
//     System.out.println(query.getResultList().size());
        return query.getResultList();
    }

    @Override
    public EntityManager getEntityManager() {
        return em;
    }

    @Override
    public void setEntityManager(EntityManager em) {
        this.em = em;
    }

    @Override
    public List<Anamnesis> getRecordList(Long PIN) {
//        System.out.println("PatientHistorySession.java-getRecordList");
        patient=em.find(Patient.class, PIN);
        return patient.getAnamnesisList();
//        String strQuery = "SELECT a from Anamnesis a";
//        Query query = em.createQuery(strQuery);
//        return query.getResultList();
    }

    @Override
    public Anamnesis getAnamnesisEntity() {
        return anamnesisEntity;
    }

    @Override
    public void setAnamnesisEntity(Anamnesis anamnesisEntity) {
        this.anamnesisEntity = anamnesisEntity;
    }

   

}
